package br.com.weysolucoes.constantes;

public class ConstantesSQL {

	// ::::::::::::::::::::DADOS DE CONEXAO:::::::::::::::::::::

	/**
	 * URL de conexao com banco de dados. Pode variar de acordo com o banco de
	 * dados utilizado (Ex.: SqlServer, PostgreSQL, DB2)
	 */

	// private final String URL_MYSQL =
	// "jdbc:mysql://localhost:3306/weysoluc_cadastrojsf";

	private final String URL_MYSQL = "jdbc:mysql://localhost:3306/weysoluc_qi";

	/**
	 * Usuario do banco de dados utilizado
	 */

	// private final String USUARIO = "weysoluc_root";
	private final String USUARIO = "root";

	/**
	 * Senha do banco de dados utilizado
	 */

	// private final String PASSWORD = "123123";
	private final String PASSWORD = "";

	/**
	 * Nome do Driver Utilizado;
	 */

	private final String NOME_DRIVER = "com.mysql.jdbc.Driver";

	/**
	 * Nome da Base de Dados
	 */

	private final String BASE_DADOS = "weysoluc_qi";

	// ::::::::::::::::::::TABELA REFRIGERADORES:::::::::::::::::::::

	/**
	 * Tabela Refrigerador
	 */

	private static final String TABELA_MODELO_REFRIGERADOR = "modelo_refrigerador";

	/**
	 * Respons�vel por Atualizar tabela Refrigerador
	 */

	private static final String SQL_UPDATE_REFRIGERADOR = "UPDATE modelo_refrigerador SET des_modelo = ?, cod_familia = ? WHERE cod_modelo = ?";

	public static String getSqlUpdateRefrigerador() {
		return SQL_UPDATE_REFRIGERADOR;
	}

	/**
	 * Respons�vel por remover dados da tabela Refrigerador
	 */
	private static final String SQL_DELETE_REFRIGERADOR = "DELETE FROM modelo_refrigerador WHERE cod_modelo = ?";

	public static String getSqlDeleteRefrigerador() {
		return SQL_DELETE_REFRIGERADOR;
	}

	/**
	 * Respons�vel por selecionar todos os dados da tabela Refrigerador
	 */
	private static final String SQL_SELECT_REFRIGERADOR = "SELECT mr.cod_modelo, mr.des_modelo, tp.des_familia, mr.cod_familia FROM "
			+ "modelo_refrigerador mr INNER JOIN tipo_familia tp ON tp.cod_familia = mr.cod_familia";

	public static String getSqlSelectRefrigerador() {
		return SQL_SELECT_REFRIGERADOR;
	}

	/**
	 * Respons�vel por inserir novos dados na tabela Refrigerador
	 */
	private static final String SQL_INSERT_REFRIGERADOR = "INSERT INTO modelo_refrigerador (cod_modelo, des_modelo, cod_familia ) VALUES (?, ?, ?)";

	public static String getSqlInsertRefrigerador() {
		return SQL_INSERT_REFRIGERADOR;
	}

	// ::::::::::::::::::::TABELA N�O CONFORMIDADE:::::::::::::::::::::

	/**
	 * Tabela Grupo de Defeito
	 */

	private static final String TABELA_NAO_CONFORMIDADE = "nao_conformidade";

	/**
	 * Respons�vel por Atualizar tabela Grupo de Defeito
	 */
	private static final String SQL_UPDATE_NAO_CONFORMIDADE = "UPDATE nao_conformidade SET des_nao_conformidade = ?, cod_grupo_defeito = ? WHERE cod_nao_conformidade = ?";

	public static String getSqlUpdateNaoConformidade() {
		return SQL_UPDATE_NAO_CONFORMIDADE;
	}

	/**
	 * Responsavel por remover dados da tabela Grupo de Defeito
	 */
	private static final String SQL_DELETE_NAO_CONFORMIDADE = "DELETE FROM nao_conformidade WHERE cod_nao_conformidade = ?";

	public static String getSqlDeleteNaoConformidade() {
		return SQL_DELETE_NAO_CONFORMIDADE;
	}

	/**
	 * Responsavel por selecionar todos os dados da tabela Grupo de Defeito
	 */
	private static final String SQL_SELECT_NAO_CONFORMIDADE = "SELECT nc.cod_nao_conformidade, nc.des_nao_conformidade, gd.des_grupo_defeito, nc.cod_grupo_defeito "
			+ "FROM nao_conformidade nc INNER JOIN grupo_defeito gd ON gd.cod_grupo_defeito = nc.cod_grupo_defeito";

	public static String getSqlSelectNaoConformidade() {
		return SQL_SELECT_NAO_CONFORMIDADE;
	}

	/**
	 * Respons�vel por inserir novos dados na tabela Grupo de Defeito
	 */
	private static final String SQL_INSERT_NAO_CONFORMIDADE = "INSERT INTO nao_conformidade (cod_nao_conformidade, des_nao_conformidade, cod_grupo_defeito) VALUES (?, ?, ?)";

	public static String getSqlInsertNaoConformidade() {
		return SQL_INSERT_NAO_CONFORMIDADE;
	}

	// ::::::::::::::::::::TABELA USUARIO:::::::::::::::::::::

	/**
	 * Tabela Usuario
	 */

	private static final String TABELA_USUARIO = "usuario";

	/**
	 * Respons�vel por Atualizar tabela Usu�rio
	 */
	private static final String SQL_UPDATE_USUARIO = "UPDATE usuario SET nm_usuario = ?, cod_funcao = ?, usuario_login = ?, senha_login= ?, cod_perfil = ?, cod_status = ?  WHERE mat_usuario = ?";

	public static String getSqlUpdateUsuario() {
		return SQL_UPDATE_USUARIO;
	}

	/**
	 * Respons�vel por remover dados da tabela Usu�rio
	 */
	private static final String SQL_DELETE_USUARIO = "DELETE FROM usuario WHERE mat_usuario = ?";

	public static String getSqlDeleteUsuario() {
		return SQL_DELETE_USUARIO;
	}

	/**
	 * Respons�vel por selecionar todos os dados da tabela Usu�rio
	 */
	private static final String SQL_SELECT_USUARIO = "SELECT us.mat_usuario, us.nm_usuario, tu.cod_funcao, tu.des_funcao, us.usuario_login, "
			+ "us.senha_login, us.cod_perfil, tp.des_perfil, us.cod_status, su.des_status "
			+ "FROM usuario us INNER JOIN tipo_usuario tu ON us.cod_funcao = tu.cod_funcao "
			+ "INNER JOIN tipo_perfil tp ON	us.cod_perfil = tp.cod_perfil "
			+ "INNER JOIN status_usuario su ON us.cod_status = su.cod_status";

	public static String getSqlSelectUsuario() {
		return SQL_SELECT_USUARIO;
	}

	/**
	 * Respons�vel por inserir novos dados na tabela Usu�rio
	 */
	private static final String SQL_INSERT_USUARIO = "INSERT INTO usuario (mat_usuario, nm_usuario, cod_funcao, usuario_login, senha_login, cod_perfil, cod_status) VALUES (?, ?, ?, ?, ?, ?, ?)";

	public static String getSqlInsertUsuario() {
		return SQL_INSERT_USUARIO;
	}

	/**
	 * Responavel por verificar usuario no login
	 */
	private static final String SQL_VERIFICAR_USUARIO_LOGIN = "SELECT * FROM usuario WHERE usuario_login = ? AND senha_login = ?";

	public static String getSqlVerificarUsuarioLogin() {
		return SQL_VERIFICAR_USUARIO_LOGIN;
	}

	// ::::::::::::::::::::TABELA EVIDENCIAS N�O CONFORMIDADE:::::::::::::::::::::

	/**
	 * Tabela Nao Evidencias de n�o conformidade
	 */

	private static final String TABELA_EVIDENCIA_NC = "evidencia_nc";

	/**
	 * Respons�vel por Atualizar tabela Evidencias de NC
	 */
	private static final String SQL_UPDATE_EVIDENCIA_NC = "UPDATE evidencia_nc SET mat_usuario = ?, cod_modelo = ?, cod_nao_conformidade = ?, num_serie = ?"
			+ " WHERE cod_evidencia = ?";

	public static String getSqlUpdateEvidencia() {
		return SQL_UPDATE_EVIDENCIA_NC;
	}

	/**
	 * Respons�vel por remover dados da tabela Evidencia
	 */
	private static final String SQL_DELETE_EVIDENCIA_NC = "DELETE FROM evidencia_nc WHERE cod_evidencia = ?";

	public static String getSqlDeleteEvidencia() {
		return SQL_DELETE_EVIDENCIA_NC;
	}

	/**
	 * Respons�vel por selecionar todos os dados da tabela Grupo de Defeito
	 */
	private static final String SQL_SELECT_EVIDENCIA_NC = "SELECT ev.cod_evidencia, ev.mat_usuario, us.nm_usuario, ev.cod_modelo, ev.cod_nao_conformidade, "
			+ "ev.num_serie, ev.dt_hr_evidencia FROM evidencia_nc ev INNER JOIN usuario us ON ev.mat_usuario = us.mat_usuario INNER JOIN modelo_refrigerador mr "
			+ "ON ev.cod_modelo = mr.cod_modelo "
			+ "INNER JOIN nao_conformidade nc ON ev.cod_nao_conformidade = nc.cod_nao_conformidade "
			+ "LEFT JOIN resolucao_nc re ON re.cod_evidencia = ev.cod_evidencia "
			+ "WHERE re.cod_resolucao IS NULL";

	public static String getSqlSelectEvidencia() {
		return SQL_SELECT_EVIDENCIA_NC;
	}

	/**
	 * Respons�vel por inserir novos dados na tabela Grupo de Defeito
	 */
	private static final String SQL_INSERT_EVIDENCIA_NC = "INSERT INTO evidencia_nc (mat_usuario, cod_modelo, cod_nao_conformidade, num_serie) VALUES (?, ?, ?, ?)";

	public static String getSqlInsertEvidencia() {
		return SQL_INSERT_EVIDENCIA_NC;
	}

	// ::::::::::::::::::::TABELA RESOLUCAO N�O CONFORMIDADE:::::::::::::::::::::

	/**
	 * Tabela Nao Evidencias de n�o conformidade
	 */

	private static final String TABELA_RESOLUCAO_NC = "resolucao_nc";

	/**
	 * Respons�vel por Atualizar tabela Evidencias de NC
	 */
	private static final String SQL_UPDATE_RESOLUCAO_NC = "UPDATE resolucao_nc SET cod_evidencia = ?, mat_usuario = ?, cod_nao_conformidade = ?, des_resolucao = ?"
			+ " WHERE cod_resolucao = ?";

	public static String getSqlUpdateResolucao() {
		return SQL_UPDATE_RESOLUCAO_NC;
	}

	/**
	 * Respons�vel por remover dados da tabela Evidencia
	 */
	private static final String SQL_DELETE_RESOLUCAO_NC = "DELETE FROM resolucao_nc WHERE cod_resolucao = ?";

	public static String getSqlDeleteResolucao() {
		return SQL_DELETE_RESOLUCAO_NC;
	}

	/**
	 * Respons�vel por selecionar todos os dados da tabela Resolucao
	 */
	private static final String SQL_SELECT_RESOLUCAO_NC = "SELECT re.cod_resolucao, re.cod_evidencia, re.mat_usuario, us.nm_usuario, re.cod_nao_conformidade, re.des_resolucao, re.dt_hr_resolucao FROM resolucao_nc re INNER JOIN usuario us ON re.mat_usuario = us.mat_usuario";
		 
	public static String getSqlSelectResolucao() {
		return SQL_SELECT_RESOLUCAO_NC;
	}

	/**
	 * Respons�vel por inserir novos dados na tabela Grupo de Defeito
	 */
	private static final String SQL_INSERT_RESOLUCAO_NC = "INSERT INTO resolucao_nc (cod_evidencia, mat_usuario, cod_nao_conformidade, des_resolucao) VALUES (?, ?, ?, ?)";

	public static String getSqlInsertResolucao() {
		return SQL_INSERT_RESOLUCAO_NC;
	}
	
	// ::::::::::::::::::::GET'S E SET'S :::::::::::::::::::::::::::::::

	public String getURL_MYSQL() {
		return URL_MYSQL;
	}

	public String getUSUARIO() {
		return USUARIO;
	}

	public String getPASSWORD() {
		return PASSWORD;
	}

	public String getNOME_DRIVER() {
		return NOME_DRIVER;
	}

	public String getBASE_DADOS() {
		return BASE_DADOS;
	}
}
